包名 结绳.Meng

/*
*
*    @阿杰   Meng
*
*    有问题请联系：q2217444740
*
*/

@禁止创建对象
@导入Java("androidx.recyclerview.widget.RecyclerView.LayoutManager")
类 布局管理器 : 窗口组件
	@code
	public #<高级列表框> rv;
	public LayoutManager 布局管理器;
	
    public #<布局管理器>(android.content.Context context) {
	    super(context);
    }
	
	public LayoutManager getLM(){
		return (LayoutManager)布局管理器;
	}
	
	public void setRv(#<高级列表框> l){
		this.rv = l;
	}
	@end
	
	方法 取项目类型(索引 : 整数) : 整数
		返回 取列表().取适配器().取项目类型(索引)
	结束 方法
	
	方法 取列表() : 高级列表框
		code return rv;
	结束 方法
	
	方法 取适配器() : 高级适配器
		返回 取列表().取适配器()
	结束 方法
	
结束 类

@导入Java("androidx.recyclerview.widget.LinearLayoutManager")
@导入Java("androidx.recyclerview.widget.RecyclerView.LayoutManager")
类 线性布局管理器 : 布局管理器
	@code
    public #<线性布局管理器>(android.content.Context context) {
	    super(context);
        布局管理器 = new LinearLayoutManager(context,1,false);
    }
	
	public LinearLayoutManager getLM(){
		return (LinearLayoutManager)布局管理器;
	}
	@end

	属性写 排列方向(排列方向 : 布局管理器_排列方向)
		变量 方向 : 整数
		code #方向 = #排列方向;
		假如 方向
			是 0
				code getLM().setOrientation(0);
			是 1
				code getLM().setOrientation(0);
				倒序(真)
			是 2
				code getLM().setOrientation(1);
			是 3
				code getLM().setOrientation(1);
				倒序(真)
		结束 假如
	结束 属性

	属性写 倒序(是否倒序 : 逻辑型)
		code getLM().setReverseLayout(#是否倒序);
	结束 属性

结束 类

@全局类
@外部Java文件("../依赖库/布局管理器/StickyLinearLayoutManager.java")
@外部Java文件("../依赖库/布局管理器/StickyHeaderHandler.java")
@外部Java文件("../依赖库/布局管理器/ViewHolderFactory.java")
@导入Java("com.meng.StickyLinearLayoutManager")
类 线性布局管理器_悬停视图 : 线性布局管理器
	
	@静态
	常量 悬停项目类型 : 整数 = -9876543
	
	@code
	public #<线性布局管理器_悬停视图>(android.content.Context context) {
	    super(context);
		布局管理器 = new StickyLinearLayoutManager(context);
	}
	
	public void setRv(#<高级列表框> l){
		super.setRv(l);
		getLM().mBaseRv = l.getView();
	}
	
	public StickyLinearLayoutManager getLM(){
		return (StickyLinearLayoutManager)布局管理器;
	}
	@end
结束 类

@导入Java("androidx.recyclerview.widget.GridLayoutManager")
@导入Java("androidx.recyclerview.widget.RecyclerView.LayoutManager")
类 宫格布局管理器 : 线性布局管理器

	@code
    public #<宫格布局管理器>(android.content.Context context) {
	    super(context);
        布局管理器 = new GridLayoutManager(context, 2);
		getLM().setSpanSizeLookup(
                new GridLayoutManager.SpanSizeLookup() {
                    @Override
                    public int getSpanSize(int p) {
						Integer n = #项目占用格数(#取项目类型(p), p);
                        return n > 0 ? n : 1;
                    }
                }
        );
    }
	
	public GridLayoutManager getLM(){
		return (GridLayoutManager)布局管理器;
	}
	@end

	属性写 列数(列数 : 整数)
		code getLM().setSpanCount(#列数);
	结束 属性
	
	定义事件 项目占用格数(项目类型 : 整数, 索引 : 整数) : 整数

结束 类

@外部Java文件("../依赖库/布局管理器/StickyGridLayoutManager.java")
@外部Java文件("../依赖库/布局管理器/StickyHeaderHandler.java")
@外部Java文件("../依赖库/布局管理器/ViewHolderFactory.java")
@导入Java("com.meng.StickyGridLayoutManager")
类 宫格布局管理器_悬停视图 : 宫格布局管理器
	
	@静态
	常量 悬停项目类型 : 整数 = -9876543
	
	@code
    public #<宫格布局管理器_悬停视图>(android.content.Context context) {
	    super(context);
        布局管理器 = new StickyGridLayoutManager(context, 2, 1);
		getLM().setSpanSizeLookup(
                new StickyGridLayoutManager.SpanSizeLookup() {
                    @Override
                    public int getSpanSize(int p) {
						Integer n = #项目占用格数(#取项目类型(p), p);
                        return n > 0 ? n : 1;
                    }
                }
        );
    }
	
	public void setRv(#<高级列表框> l){
		super.setRv(l);
		((StickyGridLayoutManager)布局管理器).mBaseRv = l.getView();
	}
	@end
结束 类

@导入Java("androidx.recyclerview.widget.StaggeredGridLayoutManager")
@导入Java("androidx.recyclerview.widget.RecyclerView.LayoutManager")
类 瀑布流布局管理器 : 布局管理器
	@code
    public #<瀑布流布局管理器>(android.content.Context context) {
	    super(context);
        布局管理器 = new StaggeredGridLayoutManager(2, 1);
    }
	
	public StaggeredGridLayoutManager getLM(){
		return (StaggeredGridLayoutManager)布局管理器;
	}
	@end
	
	属性写 列数(列数 : 整数)
		code getLM().setSpanCount(#列数);
	结束 属性

	//滑动后自动填充间隙排序，默认：假
	属性写 禁用间隙自动填充(是否 : 逻辑型)
		code getLM().setGapStrategy(#是否 ? 0 : 2);
	结束 属性
	
	属性写 排列方向(排列方向 : 布局管理器_排列方向)
		变量 方向 : 整数
		code #方向 = #排列方向;
		假如 方向
			是 0
				code getLM().setOrientation(0);
			是 1
				code getLM().setOrientation(0);
				倒序(真)
			是 2
				code getLM().setOrientation(1);
			是 3
				code getLM().setOrientation(1);
				倒序(真)
		结束 假如
	结束 属性

	属性写 倒序(是否倒序 : 逻辑型)
		code getLM().setReverseLayout(#是否倒序);
	结束 属性

结束 类

@外部依赖库("../依赖库/flexbox-2.0.1.aar")
@导入Java("android.view.ViewGroup")
@导入Java("androidx.recyclerview.widget.RecyclerView")
@导入Java("com.google.android.flexbox.FlexboxLayoutManager")
类 弹性布局管理器 : 布局管理器

	@code
   public #<弹性布局管理器>(android.content.Context context) {
	   super(context);
       布局管理器 = new FlexboxLayoutManager(context, 1){
	   	public RecyclerView.LayoutParams generateLayoutParams(ViewGroup.LayoutParams lp) {
      	 	if (lp instanceof RecyclerView.LayoutParams) {
           		return new FlexboxLayoutManager.LayoutParams((RecyclerView.LayoutParams) lp);
      	 	} else if (lp instanceof ViewGroup.MarginLayoutParams) {
       			return new FlexboxLayoutManager.LayoutParams((ViewGroup.MarginLayoutParams) lp);
      	 	} else {
       			return new FlexboxLayoutManager.LayoutParams(lp);
      	 	}
    		}
	   };
   }
	
	public FlexboxLayoutManager getLM(){
		return (FlexboxLayoutManager)布局管理器;
	}
	@end

	属性写 排列方向(排列方向 : 布局管理器_排列方向)
		code getLM().setFlexDirection(#排列方向);
	结束 属性

	属性写 支持换行(支持换行 : 逻辑型 = 真)
		code getLM().setFlexWrap(#支持换行 ? 1 : 0);
	结束 属性

	属性写 主轴对齐方式(对齐方式 : 布局管理器_主轴对齐方式)
		code getLM().setJustifyContent(#对齐方式);
	结束 属性

	属性写 副轴对齐方式(对齐方式 : 布局管理器_副轴对齐方式)
		code getLM().setAlignItems(#对齐方式);
	结束 属性

结束 类

@禁止创建对象
@常量类型(整数)
@需求值类型(整数)
类 布局管理器_主轴对齐方式
	//起点对齐。
	@静态
	常量 起点 : 布局管理器_主轴对齐方式 = 0

	//终点对齐。
	@静态
	常量 终点 : 布局管理器_主轴对齐方式 = 1

	//中心对齐。
	@静态
	常量 居中 : 布局管理器_主轴对齐方式 = 2

	//项目之间的间隔都相等。
	@静态
	常量 两端对齐 : 布局管理器_主轴对齐方式 = 3

	//每个项目两侧的间隔相等。
	@静态
	常量 边距相等 : 布局管理器_主轴对齐方式 = 4
结束 类

@禁止创建对象	
@常量类型(整数)
@需求值类型(整数)
类 布局管理器_副轴对齐方式
	//起点对齐。
	@静态
	常量 起点 : 布局管理器_副轴对齐方式 = 0

	//终点对齐。
	@静态
	常量 终点 : 布局管理器_副轴对齐方式 = 1

	//中心对齐。
	@静态
	常量 居中 : 布局管理器_副轴对齐方式 = 2

	//项目的第一行文字的基线对齐。
	@静态
	常量 文字基线 : 布局管理器_副轴对齐方式 = 3

	//默认，如果项目未设置高度或设为自动，将占满整个容器的高度。
	@静态
	常量 自动填充 : 布局管理器_副轴对齐方式 = 4
结束 类

@禁止创建对象
@常量类型(整数)
@需求值类型(整数)
类 布局管理器_排列方向
	@静态
	常量 横 : 布局管理器_排列方向 = 0
	@静态
	常量 横_倒序 : 布局管理器_排列方向 = 1
	@静态
	常量 竖 : 布局管理器_排列方向 = 2
	@静态
	常量 竖_倒序 : 布局管理器_排列方向 = 3
结束 类